home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / dev / gui / gtlayout.lha / Source / LT_Activate.c < prev    next >
C/C++ Source or Header  |  1999-01-03  |  2KB  |  102 lines

  1. /*
  2. **    GadTools layout toolkit
  3. **
  4. **    Copyright © 1993-1999 by Olaf `Olsen' Barthel
  5. **        Freely distributable.
  6. **
  7. **    :ts=4
  8. */
  9.  
  10. #ifndef _GTLAYOUT_GLOBAL_H
  11. #include "gtlayout_global.h"
  12. #endif
  13.  
  14. #include "Assert.h"
  15.  
  16. /****** gtlayout.library/LT_Activate ******************************************
  17. *
  18. *   NAME
  19. *    LT_Activate -- Activate a string type gadget.
  20. *
  21. *   SYNOPSIS
  22. *    LT_Activate(Handle,ID);
  23. *                  A0   D0
  24. *
  25. *    VOID LT_Activate(LayoutHandle *,LONG);
  26. *
  27. *   FUNCTION
  28. *    The equivalent to intuition.library/ActivateGadget().
  29. *
  30. *   INPUTS
  31. *    Handle - Pointer to LayoutHandle structure.
  32. *
  33. *    ID - ID of Gadget to activate.
  34. *
  35. *   RESULT
  36. *    none
  37. *
  38. *   SEE ALSO
  39. *    intuition.library/ActivateGadget
  40. *
  41. ******************************************************************************
  42. *
  43. */
  44.  
  45. VOID LIBENT
  46. LT_Activate(REG(a0) LayoutHandle *handle,REG(d0) LONG id)
  47. {
  48.     struct Gadget *gadget;
  49.  
  50.     if(gadget = LTP_FindGadget(handle,id))
  51.     {
  52.         ObjectNode *node;
  53.  
  54.         if(GETOBJECT(gadget,node))
  55.         {
  56.             if(NOT node->Disabled)
  57.             {
  58.                 BOOL CanActivate;
  59.  
  60.                 #ifdef DO_BOOPSI_KIND
  61.                 {
  62.                     CanActivate = (BOOL)(    LIKE_STRING_KIND(node) ||
  63.                                             (node->Type == INTEGER_KIND) ||
  64.                                             (node->Type == TEXTEDIT_KIND) ||
  65.                                             (node->Type == BOOPSI_KIND && node->Special.BOOPSI.ActivateHook)
  66.                                         );
  67.                 }
  68.                 #else
  69.                 {
  70.                     CanActivate = (BOOL)(    LIKE_STRING_KIND(node) ||
  71.                                             (node->Type == INTEGER_KIND)
  72.                                         );
  73.                 }
  74.                 #endif /* DO_BOOPSI_KIND */
  75.  
  76.                 if(CanActivate)
  77.                 {
  78.                     handle->Previous = gadget;
  79.  
  80.                     #ifdef DO_BOOPSI_KIND
  81.                     {
  82.                         if(node->Type == BOOPSI_KIND)
  83.                         {
  84.                             if(node->Special.BOOPSI.ActivateHook)
  85.                                 CallHookPkt(node->Special.BOOPSI.ActivateHook,(APTR)handle,node->Host);
  86.                         }
  87.                         else
  88.                         {
  89.                             ActivateGadget(handle->Previous,handle->Window,NULL);
  90.                         }
  91.                     }
  92.                     #else
  93.                     {
  94.                         ActivateGadget(handle->Previous,handle->Window,NULL);
  95.                     }
  96.                     #endif /* DO_BOOPSI_KIND */
  97.                 }
  98.             }
  99.         }
  100.     }
  101. }
  102.